package qc.module.demo.api.controller;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import qc.common.core.exception.QCPromptException;
import qc.common.core.utils.StringSplitUtil;
import qc.module.demo.dto.tspoints.TsPointsDto;
import qc.module.demo.dto.tspoints.TsPointsQueryConditionDto;
import qc.module.demo.service.TsPointsService;

import java.util.List;

/**
 * 时序数据点号
 * @author YRR
 * @create 2025-04-14 10:57
 */
@RestController
@RequestMapping("/tspoint")
public class TsPointsController {

    @Autowired
    private TsPointsService service;

    /**
     * 获取指定点号信息
     * @param id 时序数据点号
     * @return TsPointsDto
     */
    @RequestMapping(value = "/get", method = {RequestMethod.GET, RequestMethod.POST})
    public List<TsPointsDto> getByParam(@RequestParam(value = "id", required = true) String id) throws QCPromptException {
        if (StringUtils.isBlank(id)) throw new QCPromptException("点号不能为空");
        String[] ids = StringSplitUtil.Split(id, true);

        return service.get(ids);
    }

    /**
     * 获取指定点号信息
     * @param id 时序数据点号
     * @return TsPointsDto
     */
    @RequestMapping(value = "/get/{id}", method = {RequestMethod.GET, RequestMethod.POST})
    public List<TsPointsDto> getByPath(@PathVariable(value = "id", required = true) String id) throws QCPromptException {
        if (StringUtils.isBlank(id)) throw new QCPromptException("点号不能为空");
        String[] ids = StringSplitUtil.Split(id, true);
        return service.get(ids);
    }

    /**
     * 新增时序点号信息
     * @param dto 新增信息
     * @return 返回null表示成功，否则返回错误信息
     */
    @RequestMapping(value = "/add", method = {RequestMethod.GET, RequestMethod.POST})
    public String add(@RequestBody TsPointsDto dto) throws QCPromptException {
        return service.add(dto);
    }

    /**
     * 修改时序点号信息
     * @param dto 修改信息
     * @return 返回null表示成功，否则返回错误信息
     */
    @RequestMapping(value = "/update", method = {RequestMethod.PUT, RequestMethod.POST})
    public String update(@RequestBody TsPointsDto dto) throws QCPromptException {
        return service.update(dto);
    }

    /**
     * 查询时序点号信息
     * @param dto 查询条件
     * @return List<TsPointsDto>
     */
    @RequestMapping(value = "/query", method = {RequestMethod.GET, RequestMethod.POST})
    public List<TsPointsDto> query(@RequestBody TsPointsQueryConditionDto dto) throws QCPromptException {
        return service.query(dto);
    }

    /**
     * 删除
     * @param id 时序数据点号
     * @return 返回null表示成功，否则返回错误信息
     */
    @DeleteMapping("/delete")
    public String deleteByParam(@RequestParam(value = "id", required = true) String id) {
        return service.delete(id);
    }

    /**
     * 删除
     * @param id 时序数据点号
     * @return 返回null表示成功，否则返回错误信息
     */
    @DeleteMapping("/delete/{id}")
    public String deleteByPath(@PathVariable(value = "id", required = true) String id) {
        return service.delete(id);
    }

}
